package com.io.io03;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class FindAndDelete {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        String rootPath = "D:\\课程";
        String condition = ".txt";

        List<File> resultList = new ArrayList<>();  // 存放符合条件的文件列表

        // 遍历整棵树，找到符合条件的所有文件，并且将结果放入 resultList
        File rootFile = new File(rootPath);
        traversal(rootFile, condition, resultList);

        // 依次针对每个结果，询问用户是否要删除
        for (File file : resultList) {
            System.out.println("是否要删除该文件: " + file.getCanonicalPath());
            if (!scanner.hasNextBoolean()) {
                System.out.println("退出");
                return;
            }

            boolean isDelete = scanner.nextBoolean();
            if (isDelete) {
                file.delete();
            }
        }
    }

    private static void traversal(File dirFile, String condition, List<File> resultList) {
        File[] files = dirFile.listFiles();
        if (files == null) {
            return;
        }

        for (File file : files) {
            if (file.isDirectory()) {
                traversal(file, condition, resultList);
            } else if (file.isFile()) {
                // 判断文件名是否满足条件 ：是否以 xxx 结尾
                String name = file.getName();
                if (name.endsWith(condition)) {
                    // 说明符合查找条件.
                    resultList.add(file);
                }
            }
        }
    }
}
